1 module about_strings; 2 3 import dunit; 4 import helpers; 5 6 class AboutStrings 7 { 8 mixin UnitTest; 9 10 @Test void stringSlicing() 11 { 12 auto sentence = "The quick brown fox"; 13 assertEquals(sentence[0], FILL_IN_THIS_CHAR); 14 assertEquals(sentence[1 .. 3], FILL_IN_THIS_STRING); 15 assertEquals(sentence[$ - 1], FILL_IN_THIS_CHAR); 16 assertEquals(sentence[$ - 3 .. $], FILL_IN_THIS_STRING); 17 } 18 19 @Test void stringConcatenation() 20 { 21 auto str1 = "Hello"; 22 auto str2 = " World"; 23 auto str = str1 ~ str2; 24 assertEquals(str, FILL_IN_THIS_STRING); 25 } 26 27 @Test void stringsAreImmutable() 28 { 29 auto str = "hello"; 30 // we cannot do this: 31 // str[0]='H'; why? 32 // but we must get a mutable reference before 33 char[] s = str.dup; 34 s[0] = 'H'; 35 assertEquals(s, FILL_IN_THIS_STRING); 36 } 37 38 @Test void stringLiterals() 39 { 40 auto str1 = `c:\nurten`; // \n is not getting interpreted as newline 41 auto str2 = r"c:\nurten"; // same here 42 assertEquals(str1, FILL_IN_THIS_STRING); 43 assertEquals(str2, FILL_IN_THIS_STRING); 44 } 45 46 @Test void unicodeLiterals() 47 { 48 string s = "résumé"c; // same as "résumé" 49 wstring w = "résumé"w; 50 dstring d = "résumé"d; 51 52 assertEquals(s.length, FILL_IN_THIS_NUMBER); 53 assertEquals(w.length, FILL_IN_THIS_NUMBER); 54 assertEquals(d.length, FILL_IN_THIS_NUMBER); 55 } 56 }